The present invention relates to wireless devices such as wireless modems, wireless networks and personal data assistants (PDAs), and more particularly to a method and system for managing and controlling such wireless devices through a wireless control subsytem running on and extending a multi-tasking operating system.
Traditionally, computers at remote locations communicated with one another through hard-wired or cable connections. One such common connection is a computer network known as a LAN (local area network) by which computers are connected to one another through other intermediary computers such as servers and routers via physical cabling (i.e., twisted-pair wire, coaxial cables, fiber optic lines) to and from the computers. Other hard-wired connection methods include connections by traditional modems which allow computers to communicate with one another over telephone or data lines.
More recently, with the proliferation of cellular and wireless technology, there has been a dramatic increase in xe2x80x9cwirelessxe2x80x9d computing whereby computers can communicate with one another without cable or wires over wireless or cellular networks. Wireless computing allows for increased mobility of a computer user since it allows computer transmissions and communications from virtually any location where a wireless or cellular system is present. Today, wireless networks are prevalent almost everywhere in the world. With the increased use of laptop, notebook and palm-sized computers and PDAs, more and more individuals and companies now desire to communicate and exchange data by wireless exchange.
Although wireless computing is relatively new and continues to gain popularity, various methods of programming for and configuring wireless devices have been developed. One such xe2x80x9cfirst generationxe2x80x9d method for creating software to handle wireless devices was through the use of so-called direct device access. Direct device access gave the programmer the ability to have total control over the device. Unfortunately, a great deal of knowledge was required about the particular device and the network on which it operated as each device has its own unique method by which it is used. To make matters worse, each final software program which was developed was restricted to the particular device to which it was built. In order to switch networks or devices, each application would have to be re-written to accommodate the differences in the network and/or device.
xe2x80x9cMiddlewarexe2x80x9d (i.e., software that connects two otherwise separate applications) for wireless applications was then developed as the next step. By providing a common API (application program interface) upon which applications could be built, middleware applications could protect themselves from changes in the selected wireless networks, system upgrades and wireless devices, provided that the middleware actually supported the new networks and upgrades. Middleware, however, was designed around the programming models of the time such as single-threaded, single-application operating systems like DOS (disk operating system), with a single wireless device connected at a time.
Further, middleware made use of a polling approach whereby the software would constantly send out signals or polling sequences to determine whether or not a relevant event occurred in the wireless system (such as an out of coverage situation, whether a modem was on-line, etc.) This polling paradigm used up precious computer cycles and resulted in constant looping of requests for status information.
As operating systems evolved into multi-tasking 32-bit environments, such as Windows 95 and Windows NT, customers began to demand more from their software. At the same time, as mobile computing became more prevalent, the traditional approaches discussed above began to fall short. One solution was to simply port middleware to the new environments. However, this attempt did not take advantage of the new operating systems and all its features. Further, applications developed under a single-threaded, DOS programming model which were then xe2x80x9cportedxe2x80x9d to a multi-tasking environment were often difficult to successfully deploy.
Attempts were also made to place industry standard interfaces in front of middleware""s proprietary API. However, these attempts were only marginally successful and problems surfaced. Middleware today lacks the ability to handle system-level events or handle multiple applications in a fashion appropriate for these environments. In order for middleware to truly fit into the new computing world, a port from a single-tasking environment is not enough.
Accordingly, there exists a need for a new generation of wireless-enabling technology to make wireless communications and programming easier and faster where direct device access and middleware cannot, and provide new features which allow the creation of applications which were nearly impossible to think about before. Such need is addressed by the present invention.
One aspect of the present invention provides methods of operating a computer system for managing and controlling wireless devices. Preferred methods according to this aspect of the invention include the steps of providing at least one wireless device connected to a computer, providing a multi-tasking operating system having a base communications API to the computer, providing at least one wireless-related application running on the computer for enabling wireless communications among the wireless device and wireless-related application, and providing a wireless control subsystem to the computer. The a wireless control subsystem includes a programming module extending the base communications API through a set of programming objects callable by the wireless-related application, and a system module having a plurality of layers of linked programming objects which propagate information from object to object indicative of an occurrence of system level events related to the operation and/or status of the wireless device. The method further includes the steps of communicating the system level events from the wireless device to the system module; propagating information indicative of the system level events through at least some of the layers of objects within the system module; and further propagating the information indicative of the system level events from the system module to the programming module and from the programming module to the wireless-related application.
In another preferred method of the present invention, there is provided a method of operating a computer system for managing and controlling wireless devices which allows system level event propagation across two or more computers. Such method preferably includes the steps of providing at least one wireless device connected to a first computer and providing a second computer remote from the first computer, with the first and second computers being connected by a communications link. A multi-tasking operating system is provided to each of the first and second computers, and the multi-task operating system of the second computer includes a base communications API. At least one wireless-related application is provided which runs on the second computer for enabling wireless communications between the wireless device and wireless-related application. The method further provides a wireless control subsystem to the first computer comprising a system module which has plurality of linked programming objects operative to propagate information from object to object indicative of an occurrence of system level events related to the operation and/or status of the wireless device. Still further, the method includes the steps of providing the second computer with a programming module extending the base communications API through a set of programming objects callable by a wireless-related application, communicating system level events from the wireless device to the system module, propagating information indicative of the system level events through at least some of the objects within the system module; and further propagating the information indicative of the system level events from the system module to the programming module of the second computer across the communications link and from the programming module to the wireless-related application.
In another preferred aspect of the present invention, there is provided a method of operating a computer system for managing and controlling wireless devices including the steps of: providing at least one wireless device connected to a computer; providing at least one wireless related computer application executable on the computer; and providing a wireless control subsystem to the first computer to actuate the computer to (i) provide a system module comprising a plurality of linked programming objects, and (ii) propagate information indicative of the occurrence of system level events related to the operation and/or status of the wireless device through at least some of the objects and up to the applications running on the computer.
In yet a further preferred aspect of the present invention, a method of operating a computer system for managing and controlling wireless devices includes the steps of: providing at least one wireless device connected to a computer; providing a multi-tasking operating system having a base shell and base communications API to the computer; providing a wireless control subsystem to the computer including a shell extension module extending the base shell of the operating system through providing a first set of COM objects; and actuating the computer by the wireless control subsystem such that the COM objects are used by the wireless control program subsystem to display graphical indicia to the base shell of the operating system indicating activation of the wireless control program subsystem.
Preferably, the base shell of the operating system provides a base graphical-user interface (GUI) displaying GUI elements on a user desktop, the GUI elements including a control panel folder containing icons representing configuration controls of operating system, and the first set of COM objects of the shell extension module are configured to provide a folder icon in the control panel folder containing device icons therein representing the wireless devices and program icon in the control panel folder for accessing controls of the wireless control program subsystem by selection of the program icon. Desirably, the first set of COM objects are configured to place an additional program icon on the user desktop. Further, the first set of COM objects are also configured to display representations of the wireless devices folder and program icon in an exploring window.
More desirably, the user desktop includes a task tray region for displaying icons representing programs that extend the operating system and the first set of COM objects are configured to locate a program icon in the task tray region upon activation of the wireless control subsystem.
Another aspect of the present invention provides a method of operating a computer system for managing and controlling wireless devices including the steps of providing at least one wireless device connected to a computer and at least one wireless-related application running on the computer; providing a multi-tasking operating system having a base shell and base communications API to the computer; and providing a wireless control subsystem to the computer. The wireless control subsystem includes: a shell extension module extending the base shell of the operating system through providing a first set of COM objects used by the wireless control program subsystem to display graphical indicia to the base shell of the operating system indicating activation of the wireless control program subsystem, a programming module extending the base communications API through a set of programming objects callable by wireless-related applications for enabling wireless communications among the wireless device and wireless-related applications, and a system module having a plurality of linked programming objects operative to propagate information indicative of an occurrence of system level events related to the operation and/or status of the wireless device through the linked programming objects of the system module to the programming objects of the programming module and then to at least one application running on the computer.
In a particularly preferred arrangement, the method further includes providing an industry standard module which exposes one or more industry-standard programming interfaces to a programmer to enable development of custom wireless applications which can communicate with the programming module and the system module. Such industry-stardard programming interfaces can include ActiveX, Winsock and/or OBDC.
Desirably, the programming objects of the programming module can include application socket objects which represent single socket connections with each application, and the plurality of the linked programming objects can include a first layer of cable objects representing a communication link with a wireless device, a second layer of socket objects representing a user created socket connection, and a third layer of process objects representing the link between the system module and the programming module. In such as case, the wireless control subsystem can then actuate the computer to: sense at the cable objects the occurrence of a system level event related to the operation and/or status of the wireless device, send first signals from the cable objects indicative of the system level event to the socket objects, send second signals from the socket objects indicative of the system level event to the process objects, and send third signals indicative of the system level event from the process objects to the application socket objects of the programming module, and from the application socket objects to the application.
Preferably, the system module is operative to propagate through the objects a system level event indicative of when at least one wireless device is in an out-of-coverage area. Further, the wireless control subsystem can be configured to hold in abeyance communications with a wireless device determined to be in an out-of-coverage area until the system module determines when at least one wireless device returns to a coverage area by sensing the occurrence of an in-coverage system event.
Also preferably, the system module is operative to propagate through the objects real-time system level events to provide diagnostic information about the status of at least one wireless device, and real-time diagnostic information, such as registration status, signal strength and device address, can be displayed on a display device of the computer in an on-screen diagnostic panel.
The system module can further include at least one wizard program for automatic and simplified configuration and registration of at least one wireless device to the wireless control subsystem.
Desirably, the wireless control subsystem allows at least one the wireless devices to communicate simultaneously with two or more applications.
Another aspect of the invention provides a second remote computer and at least one wireless-related application running on the second remote computer, with the second remote computer being connected to the first computer via a communications link. Here, the wireless control subsystem is operative to allow at least one the wireless devices to communicate simultaneously with at least one application running on the first computer and at least one application running on the second remote computer.
Yet another aspect of the invention provides that the wireless control subsystem allows at least one application running on the first computer to communicate with two or more wireless devices simultaneously. Preferably, a second remote computer is provided with at least one wireless-related application, with the second remote computer being connected to the first computer via a communications link, and the wireless control subsystem is operative to allow at least one application running on the second remote computer to communicate with two or more wireless devices simultaneously.
In a further aspect of the invention, at least one wireless device can be operable with a first wireless network protocol and at least one wireless device can be operable with a second, different wireless network protocol. Further, the system module utilizes sockets for data transport. Still further, the wireless devices can be assigned a unique numeric address, wherein the system and shell extension modules are operative to match the numeric addresses to user-friendly monikers.
Another aspect of the present invention provides a method of transmitting wireless communication information from a recipient computer connected to a recipient wireless device back to a sender computer connected to a sender wireless device to confirm receipt of user data sent from the sender computer by an application running on the recipient computer. This method includes the steps of forming one or more transmission packets in the recipient computer, with each packet including a block of user data provided by the recipient computer and transport confirmation data representing the receipt by the application running on the recipient computer of the entire block of user data; and transmitting the transmission packets from the recipient computer back to the sender computer via the recipient and sender wireless devices.
Desirably, the transmission packets can be provided with performance data representing the rate at which the recipient wireless device can send and receive data, and load data representing the amount of data being presently handled by the recipient wireless device. Further, the step of transmitting occurs at a transmission rate which is varied in response to performance characteristics of the transmission based on the performance data. The step of transmitting includes also preferably includes transmitting a plurality of the transmission packets and varying the number of packets being sent to the recipient wireless device in response to performance characteristics of the recipient wireless device based on the load data.
The transmission packets, in one aspect of the invention, desirably contain: destination address data representing the identity of the recipient computer to receive the transmission packets, source address data representing the sender computer of the transmission packets, a block of user data provided by the recipient computer, transport confirmation data representing the receipt by the recipient computer of the entire block of user data, delivery notification data representing information provided back to the sender computer indicating successful receipt of the user data by the application running on the recipient computer, performance data representing the rate at which the transmission packets are being sent and received, and load data representing the number of transmission packets being concurrently received by the recipient wireless device. These transmission packets are then transmitted from the recipient computer back to the source computer via the recipient and sender wireless devices.
Yet a further aspect of the present invention provides a computer system for managing and controlling wireless devices. The system according to this aspect of the invention includes a computer and at least one wireless device connected to the computer. The computer includes memory means and processor means connected to the memory means. The memory means includes OS memory means for storing a multi-tasking operating system having a base communications API, application memory means for storing at least one wireless-related application for causing the processor means to enable wireless communications between the wireless device and wireless-related application, and subsystem memory means for storing a wireless control subsystem. The wireless control subsystem includes a programming module for causing the processor means to extend the base communications API through a set of programming objects callable by at least one wireless-related application, and a system module comprising a plurality of layers of linked programming objects for causing the processor means to propagate information from object to object indicative of an occurrence of system level events related to the operation and/or status of the wireless device.
The system module is further operative to cause the processor means to communicate system level events from the wireless device to the system module, propagate information indicative of the system level events through at least some of the layers of objects within the system module, and further propagate the information indicative of the system level events from the system module to the programming module and from the programming module to at least one wireless-related application.
Finally, a still further aspect of the present invention provides a computer system for managing and controlling wireless devices including a computer and at least one wireless device connected to the computer. The computer includes memory means and processor means connected to the memory means. The memory means includes (i) application memory means for storing at least one wireless-related application for causing the processor means to enable wireless communications between the wireless device and the wireless-related application; and subsystem memory means for storing a wireless control subsystem having a system module including a plurality of layers of linked programming objects for causing the processor means to propagate information indicative of the occurrence of system level events related to the operation and/or status of the wireless device through at least some of the objects and up to at least one application.
These aspects and other objects, features and advantages of the present invention will be more readily apparent from the detailed description of the preferred embodiments set forth below, taken in conjunction with the accompanying drawings.